﻿using System.Web.Mvc;
using web_uchet.ViewModels;
using Mvc.Validation;
namespace web_uchet.Controllers
{
    public class CompanyServiceController : MasterPageController
    {
        private ViewУслуга_КомпанииOperationProvider _Provider;
        public CompanyServiceController()
        {
            this._Provider = new ViewУслуга_КомпанииOperationProvider(this._MasterData);
        }

        public CompanyServiceController(ViewУслуга_КомпанииOperationProvider Provider)
        {
            this._Provider = Provider;
        }
        //
        // GET: /CompanyService/
        [Authorize(Roles = "Администратор,Просмотр,Менеджер")]
        public ActionResult Index()
        {
            return View(this._Provider.List());
        }

        //
        // GET: /CompanyService/Details/5
        [Authorize(Roles = "Администратор,Просмотр,Менеджер")]
        public ActionResult Details(int id)
        {
            return View(this._Provider.Details(id));
        }

        //
        // GET: /CompanyService/Create
        [Authorize(Roles = "Администратор,Менеджер")]
        public ActionResult Create()
        {
            ViewData.Add("ИД_Валюты", this._Provider.GetCurrencies(null));
            return View(new ViewУслуга_Компании());
        } 

        //
        // POST: /CompanyService/Create

        [HttpPost]
        [Authorize(Roles = "Администратор,Менеджер")]
        public ActionResult Create(ViewУслуга_Компании NewObject)
        {
            try
            {
                NewObject.Validate();
                this._Provider.Create(NewObject);
                return RedirectToAction("Index");
            }
            catch (EntityValidationException ex)
            {
                ViewData.Add("ИД_Валюты", this._Provider.GetCurrencies(NewObject.ИД_Валюты));
                ViewData.ModelState.PopulateWithErrors(ex);
                return View(NewObject);
            }
        }
        
        //
        // GET: /CompanyService/Edit/5
         [Authorize(Roles = "Администратор,Менеджер")]
        public ActionResult Edit(int id)
        {
            var EditObject = this._Provider.Details(id);
            ViewData.Add("ИД_Валюты", this._Provider.GetCurrencies(EditObject.ИД_Валюты));
            return View(EditObject);
        }

        //
        // POST: /CompanyService/Edit/5

        [HttpPost]
        [Authorize(Roles = "Администратор,Менеджер")]
         public ActionResult Edit(int id, FormCollection collection)
        {
            ViewУслуга_Компании EditObject = this._Provider.Details(id);
            try
            {
                this.UpdateModel(EditObject, collection.ToValueProvider());
                EditObject.Validate();
                this._Provider.SaveChanges();
                return RedirectToAction("Index");
            }
            catch (EntityValidationException ex)
            {
                ViewData.ModelState.PopulateWithErrors(ex);
                ViewData.Add("ИД_Валюты", this._Provider.GetCurrencies(EditObject.ИД_Валюты));
                return View(EditObject);
            }
        }

        //
        // GET: /CompanyService/Delete/5
        [Authorize(Roles = "Администратор,Менеджер")]
        public ActionResult Delete(int id)
        {
            this._Provider.Delete(id);
            return RedirectToAction("Index");
        }

        //
        // POST: /CompanyService/Delete/5

        //[HttpPost]
        //[Authorize(Roles = "Администратор,Менеджер")]
        //public ActionResult Delete(int id, FormCollection collection)
        //{
        //    try
        //    {
        //        
 
        //        return RedirectToAction("Index");
        //    }
        //    catch
        //    {
        //        return View();
        //    }
        //}
    }
}
